Programmable logic device with high speed serial interface circuitry

ABSTRACT

A programmable logic device (“PLD”) includes high speed serial interface (“HSS”) circuitry that can support several high speed serial (“HSS”) standards. Examples of the standards that can be supported are XAUI, InfiniBand, 1G Ethernet, FibreChannel, and Serial RapidIO. The HSSI circuitry may be partly programmable to support these various standards. In some cases control may come from the associated PLD core circuitry. Also in some cases some of the interface functions may be performed in the PLD core circuitry.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.11/128,916, filed May 12, 2005, which is a continuation of U.S. patentapplication Ser. No. 10/643,276, filed Aug. 18, 2003 (now U.S. Pat. No.6,911,841), which is a continuation of U.S. patent application Ser. No.10/093,785, filed Mar. 6, 2002 (now U.S. Pat. No. 6,650,140), all ofwhich are hereby incorporated by reference herein in their entireties.This application claims the benefit of U.S. provisional patentapplication No. 60/277,150, filed Mar. 19, 2001, which is herebyincorporated by reference herein in its entirety.

BACKGROUND OF THE INVENTION

High speed serial digital communication is constantly increasing inimportance. The number of different industry standards for suchcommunication is also increasing. Programmable logic device (“PLD”)technology is well known for its ability to allow one common hardwaredesign (embodied in an integrated circuit) to be programmed to meet theneeds of many different applications. PLDs with a given hardware designcan be manufactured in large quantities at low cost. Each user thenprograms PLDs of that kind to meet that user's particular needs. Theuser does not have to do a custom integrated circuit design, with theattendant high cost, delay, and difficulty of revision if modificationsare subsequently needed.

To facilitate the use of PLDs in applications involving high speedserial digital communication, it would be desirable to provide PLDs withhigh speed serial interface (“HSSI”) circuitry. One problem in doingthis, however, is that there is now a large number of high speed serial(“HSS”) communication standards or somewhat related, but perhapsnon-standard, protocols that users of PLDs may want to employ. Includinga large number of different HSSI circuits on a PLD is wasteful,uneconomical, and very difficult or even impossible if the number ofstandards or protocols to be supported becomes very large. On the otherhand, manufacturing the same basic PLD circuitry in several differentversions, each with different HSSI circuitry to meet a different HSSstandard or protocol, is also uneconomical because it is contrary to the“economy of scale” benefit otherwise associated with manufacturing onecommon PLD circuit design in large volume.

SUMMARY OF THE INVENTION

In accordance with the present invention, PLD circuitry includes atleast some of the circuit components that are needed to provide severaldifferent HSSIs. These HSSI circuit components are hard-wired to atleast a large extent, although in at least some cases at least some oftheir functions are either programmably controllable or controllable bydynamic signals (e.g., from the PLD core circuitry). Interconnectionsamong the HSSI circuit components may also be programmably controllableor dynamically controllable. By making use of appropriate ones of theavailable HSSI circuit components (e.g., by programmable or dynamicselection), and by appropriately controlling (e.g., programmably ordynamically controlling) the selected HSSI circuit components, thecircuitry can be made to perform according to any one of severalpossible HSS communication standards or other generally similarprotocols. In some cases, some of the functions required to implementcertain HSSIs may be wholly or partly performed by the PLD corecircuitry. The HSSI circuit components that are provided may be for HSSIreceiver circuitry, HSSI transmitter circuitry, or both.

Further features of the invention, its nature and various advantageswill be more apparent from the accompanying drawings and the followingdetailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a simplified block diagram of an illustrative embodiment of aprogrammable logic integrated circuit device (“PLD”) constructed inaccordance with the invention.

FIG. 2 is a more detailed, but still simplified schematic block diagramof a representative portion of the circuitry shown in FIG. 1.

FIG. 3 is a more detailed, but still simplified schematic block diagramof a representative portion of the circuitry shown in FIG. 2.

FIG. 4 is a more detailed, but still simplified schematic block diagramof another representative portion of the circuitry shown in FIG. 2.

FIGS. 5A-5C are collectively a more detailed, but still simplifiedschematic block diagram of circuitry of the type shown in FIG. 3.

FIG. 6 shows in more detail an illustrative embodiment of a type ofelement that is used in several of the other FIGS.

FIG. 7 shows an alternative embodiment of what is shown in FIG. 6.

FIG. 8 shows another alternative embodiment of what is shown in FIGS. 6and 7.

FIG. 9 is a simplified schematic block diagram of circuitry that can beused with the circuitry of FIGS. 5A-5C and/or FIGS. 12A and 12B.

FIG. 10 is a simplified schematic block diagram of circuitry that can beused with the circuitry of FIGS. 54-5C.

FIG. 11 is a simplified schematic block diagram of circuitry that can beused with the circuitry of FIGS. 5A-5C and/or FIGS. 12A and 12B.

FIGS. 12A and 12B are collectively a more detailed, but still simplifiedschematic block diagram of circuitry of the type shown in FIG. 4.

FIG. 13 is a simplified schematic block diagram of additional circuitryin accordance with the invention.

FIG. 14 is a simplified schematic block diagram of more additionalcircuitry in accordance with the invention.

FIG. 15 is a simplified schematic block diagram of still more additionalcircuitry in accordance with the invention.

FIG. 16 is a simplified schematic block diagram of still furthercircuitry in accordance with the invention.

FIG. 17 is a simplified block diagram of an illustrative systememploying circuitry in accordance with the invention.

DETAILED DESCRIPTION

An illustrative PLD 10 constructed in accordance with the invention isshown in FIG. 1. PLD 10 is an integrated circuit that includes PLD corecircuitry 20 and high speed serial interface (“HSSI”) circuitry 30. PLDcore circuitry 20 can be typical programmable logic circuitry of any ofseveral known types and constructions. In accordance with thisinvention, HSSI circuitry 30 includes various HSSI circuit componentsthat are hard-wired (at least to a large extent) and are thereforededicated to performing various functions required to implement HSSIoperations. HSSI circuitry 30 may be used to receive one or more highspeed serial (“HSS”) signals via connection(s) 32 and to pass theinformation thus received on to PLD core circuitry 20 in a form that ismore readily usable by the core circuitry. Alternatively oradditionally, HSSI circuitry 30 may be used to output via connection(s)32 one or more HSS signals indicative of information received from PLDcore circuitry 20. Leads 34 are used to convey signals between PLD corecircuitry 20 and HSSI circuitry 30. PLD core circuitry 20 may also inputand/or output other, typically non-HSSI signals via leads 22.

Although the principles of this invention are applicable to many HSSIcommunication standards, and therefore to many types of HSSI circuitry,the invention will be fully understood from the following explanation,which mainly concentrates on several HSSI standards that employconventional eight-bit/ten-bit (“8B/10B”) coding/decoding. (Forinformation regarding 8B/10B coding, see Franaszek et al. U.S. Pat. No.4,486,739.) The illustrative HSSI standards that the illustrativecircuitry shown herein supports include the standards known as (1) XAUI,(2) InfiniBand, (3) 1G Ethernet, (4) FibreChannel, and (5) SerialRapidIO. This circuitry will also support 10G Ethernet, and it willsupport many non-industry-standard protocols that are modifications ofthe true industry-standard protocols. Some users may sometimes want todevise and employ such variants of industry standards, and many suchvariants can be supported by the circuitry of this invention. The trueindustry standards (e.g., XAUI, InfiniBand, etc.) are all well known tothose skilled in the art and are fully documented in the publiclyavailable information put out by the industry committees that developedand maintain those standards. It will not be necessary to provide fulldetails of any of those standards herein.

In the illustrative embodiment shown and described herein XAUI is usedas a starting-point standard. This is because XAUI tends to require atleast as much functionality as any of the other supported standards. Theother standards can therefore be implemented using the same or similarHSSI circuit components, or subsets of those components, that areprovided in circuitry 30 to support XAUI. In the illustrative embodimentshown herein the XAUI interface is substantially fully implementable inHSSI circuitry 30. For some of the other standards, part of theinterface is implemented in HSSI circuitry 30 and part of the interfaceis implemented in PLD core circuitry 20.

In general terms the XAUI standard specifies four channels of clock datarecovery (“CDR”) data encoded using 8B/10B coding. The channels mayoperate at up to 3.125 gigabits per second (“Gbps”). The channels areused in rotating order to transmit successive bytes of information.There are continuous transmissions of data of specified maximum length,separated by “idle” intervals of minimum length. Specified specialcharacters are transmitted during the idle intervals to enable thereceiver to get ready to receive the next transmission of data.

Because XAUI is a four-channel standard, HSSI circuitry 30 in FIG. 1 isbasically organized into one or more “quads” of four channels each. Asshown in FIG. 2, a representative quad 40 includes four data channels0-3 (also identified as 50-0 through 50-3) and one supporting logiccircuit 70. Each data channel 50 can receive one data stream viaassociated driver 52 and/or can output one data stream via associateddriver 56. Each of drivers 52 and 56 is preferably a differential driverbecause the HSSI standards of interest in connection with the presentillustrative embodiment receive (“RX” ) and transmit (“TX”) informationusing differential signalling. Each receiver driver 52 has an associatedpair of input pins 54, and each transmitter driver 56 has an associatedpair of output pins 58. Each channel 50 includes the circuitry requiredto at least partly convert a received HSS signal from HSS form to a formmore suitable for application to PLD core circuitry 20 via associatedleads 62. For example, each channel 50 may receive successive serialbytes of 10 bits each (because of 8B/10B encoding) and may output to PLDcore circuitry 20 successive parallel bytes of 8 bits each. Each channel50 also includes the circuitry required to at least partly convertsignals received from PLD core circuitry 20 to HSS form for outputtransmission via the associated transmitter driver 56. For example, eachchannel 50 may receive successive parallel 8-bit bytes of data viaassociated leads 64, and may convert those bytes to successive serial10-bit bytes output via the associated transmitter driver 56.

The supporting logic 70 included in each quad 40 includes circuitry thatis usable to support certain operations in all four of the associateddata channels. For example, one phase locked loop (“PLL”) circuitreceiving a reference clock (“REFCLK”) signal may be used to producecandidate recovered clock signals for use by each of channels 50 in thatchannel's operations to produce a final recovered clock signal from theHSS CDR signal received by that channel 50. As another example, becausecertain HSS standards allow “skew” between received data channels,circuit 70 includes circuitry for determining how much the four channelsof received HSS data are skewed relative one another as part of theoperations required to compensate for such skew. (Skew is differentialtransmission delay between parallel transmission lines.) Circuit 70 mayreceive REFCLK signals via drivers 72, and may communicate with PLD core20 via leads 82 and/or 84.

FIG. 3 shows an illustrative embodiment of representative portions ofFIG. 2 in somewhat more detail. In particular, FIG. 3 shows the receiverportion of one representative channel 50. In some cases some of theelements shown in FIG. 3 may be partly embodied in supporting logic 70and are therefore shared by all four channels 50 in the quad associatedwith that supporting logic 70.

CDR circuitry 110 receives a single serial data stream from receiverdriver 52. CDR circuitry 110 may also receive several candidaterecovered clock signals via leads 112 from PLL circuitry in supportinglogic 70. As mentioned above, this PLL circuitry typically operates onone of the REFCLK signals applied to circuitry 70 as shown in FIG. 2.(See, for example, Aung et al. U.S. patent application Ser. No.09/805,843, filed Mar. 13, 2001, for more information regarding how thisaspect of supporting logic 70 may be constructed and operate to produceseveral candidate recovered clock signals from a REFCLK signal. The Aunget al. reference also includes additional details regarding how CDRcircuitry 110 may be constructed and operate to use such candidaterecovered clock signals to produce a final recovered clock signal andalso to produce a retimed data signal from the input CDR signal. Ofcourse, CDR circuitry 110 may also be constructed and operate indifferent ways, if desired.) CDR circuitry 110 uses the candidaterecovered clock signals from supporting logic 70 to recover a clocksignal from the CDR data signal it receives. CDR circuitry 110 outputsthis recovered clock signal via lead 114. CDR circuitry 110 alsoproduces a retimed data signal from the CDR data signal it receives, andit outputs that retimed data signal via lead 116. (The “recovered clocksignal” on various parts of network 114 can have either the bit ratefrequency or the byte rate frequency. One or more dividers (not shown inFIG. 3, but like element 410 in FIG. 5A) can be included in network 114to convert from the bit rate to the byte rate. For example, deserializer120 needs both the bit rate and the byte rate versions of the recoveredclock signal, but elements 130, 140, 150, and 160 need only the byterate version.)

Deserializer circuitry 120 converts the serial retimed data outputsignal of CDR circuitry 110 to several parallel data signals on leads122. To do this deserializer circuitry 120 uses the recovered clocksignal on lead 114. (See again the last-mentioned reference for anexample of how deserializer circuitry 120 may be constructed and mayoperate.) For example, successive bytes of data output in serial form byCDR circuitry 110 may be converted to successive parallel bytes of dataoutput by deserializer 120. Because XAUI and many of the other HSSstandards supported by the circuitry of FIG. 3 use 8B/10B coding,deserializer 120 is preferably designed to receive serial bytes of 10bits of data and to output parallel bytes that also have 10 bits ofdata. It will be understood, however, that any byte length can be used,and that deserializer 120 can be constructed to work with any desiredbyte length(s).

The parallel data output by deserializer 120 is applied to patterndetect circuitry 130. Pattern detect circuitry 130 works with statemachine circuitry 140 to detect particular patterns in the data outputby deserializer 120 to find byte boundaries in the incoming CDR data. InXAUI and many of the other standards supported by the circuitry of FIG.3, special characters are transmitted repeatedly (although typically atspaced intervals) during idle intervals. Pattern detect circuitryaccumulates enough output data from deserializer 120 to make sure thatsuch a special character can be detected, even though deserializer 120may initially not be properly synchronized with byte boundaries in theincoming CDR data. For example, pattern detect 130 may be able to holdtwo successive “bytes” (i.e., 20 bits) output by deserializer 120, andmay look for a special character anywhere within those 20 bits. Statemachine 140 keeps track of each such detection of a special character.When a sufficient number of special characters have been detected, allat the same location in a corresponding number of 20-bit groups,elements 130/140 can produce output signals indicating that they havedetected the byte boundaries in the incoming CDR signals. These outputsignals of elements 130/140 can be used to adjust the operation ofdeserializer 120 so that the deserializer thereafter produces outputsignals that are truly synchronized with the byte boundaries in theincoming CDR signal.

As a specific example of the foregoing, suppose that elements 130/140detect special characters at bit positions 5-14 out of bit positions0-19 in the 20 bits held by pattern detect circuitry 130. This wouldmean that deserializer 120 is not synchronized with the byte boundariesin the incoming CDR data, but instead needs to shift its deserializationoperation by five recovered clock cycles (e.g., to shift its outputbytes from bit positions 5-14 to bit positions 0-9 (or to bit positions10-19) in pattern detect circuitry 130). Such a shift in deserializationoperation can easily be accomplished, for example, by holding in reset arecovered clock divider circuit in deserializer 120 for the appropriatenumber of recovered clock signal cycles. After the recovered clockdivider circuit has been released from reset, deserializer 120 willresume operation outputting bytes that are properly synchronized withthe byte boundaries in the incoming CDR signal.

After the operations described above, the output signals of elements130/140 on leads 142 are successive parallel bytes of data that havebeen properly recovered (i.e., in accordance with the proper byteboundaries) from the incoming CDR signal. Each successive 10-bit byte onleads 142 is applied to 10 bit to 8 bit decoder circuitry 150. Thiscircuitry converts each successive 10-bit byte to the corresponding8-bit byte (e.g., in accordance with the scheme described inabove-mentioned Franaszek et al. U.S. Pat. No. 4,486,739). Circuitry 150outputs successive, parallel, 8-bit bytes via leads 152.

The data output by circuitry 150 is applied to rate matching circuitry160. The purpose of circuitry 160 is to take care of the possibilitythat there may be a small difference between the frequency of theoscillator used in the circuitry that generated the CDR signal receivedby the circuitry shown herein and the frequency of the oscillator usedmore locally with the circuitry shown herein (e.g., to generate theREFCLK signals shown in FIG. 2). Thus rate matching circuitry 160 mayinclude memory circuitry that stores successive bytes from circuitry 150in synchronism with the recovered clock signal on lead 114, but thatoutputs data via leads 164 in synchronism with a local oscillator clocksignal on lead 162. The recovered clock signal on lead 114 has afrequency determined by the frequency of the remote oscillator in thecircuitry that originated the CDR signal applied to circuitry 110. Thesignal on lead 162 has a frequency determined by the frequency of alocal oscillator. Rate matching circuitry 160 therefore acts as a bufferto accommodate possible small differences between the local and remoteoscillator frequencies. (One possible ultimate source of the signal onlead 162 can be the same as the ultimate source of an above-mentionedREFCLK signal.)

In connection with rate matching circuitry 160 it should be noted thatto avoid excessive accumulation of local and remote oscillator frequencydifference, it may be necessary for the rate matching circuitry tooccasionally delete a received character from the data passed on vialead 164, or to occasionally artificially insert a character into thedata passed on via lead 164. This can be done during idle intervals.

The output signals 164 of rate matching circuitry 160 are successive8-bit bytes of data properly decoded from the input CDR signal andsynchronized with a local oscillator. However, these bytes of data arefrom only one CDR transmission channel, and XAUI (and other standards orprotocols supported by the circuitry of this invention) permitsinterleaving of data in four such CDR channels. The interleaving schemeemployed in XAUI, for example, involves routing successive bytes ofstarting data to different ones of the four channels in turn on arepeating basis. The following table illustrates the interleaving used.Byte No. Channel No. 0 0 1 1 2 2 3 3 4 0 5 1 6 2 7 3 8 0 9 1 10  2 . . .. . .

Each of the four CDR channels may have somewhat different amounts ofdelay. This is sometimes referred to as the channels being skewedrelative to one another. Because of such skew, re-interleaving in theproper order the bytes received via the various channels may not be doneproperly without an operation called channel alignment.

In the circuitry shown in FIG. 3 channel alignment circuitry 170performs the channel alignment function in combination with thecorresponding circuitry in the other channels in the quad and therelevant portion of the supporting logic 70 of the quad. Althoughchannel alignment circuitry 170 could alternatively be constructed inother ways, one illustrative construction is as follows. In eachchannel, alignment circuitry 170 includes shift registers forregistering several successive bytes received via leads 164 and forshifting those bytes along the shift register chain. The contents ofeach shift register stage are examined for a special alignmentcharacter. (During idle intervals, alignment characters are transmittedperiodically in all four channels.) When an alignment character isdetected in one of the shift register stages in all four channels,channel alignment can be based on which of the shift register stages inthe four channels concurrently contain the channel alignment character.For example, if each of channel alignment circuits 170 includes fourshift register stages, and if the channel alignment character isconcurrently found in the fourth shift register stage in channel 0, inthe first shift register stage in channel 1, in the third shift registerstage in channel 2, and also in the third shift register stage inchannel 3, one knows that future actual data from the four channels canbe re-interleaved as follows: a byte from channel 0, shift registerstage 4 should be followed by a byte from channel 1, shift registerstage 1, which should be followed by a byte from channel 2, shiftregister stage 3, which should be followed by a byte from channel 3,shift register stage 3, and then the re-interleaving sequence shouldbegin again.

As is apparent from FIG. 3, channel alignment circuitry 170 operates onlocal oscillator clock signal 162. Although not shown in FIG. 3, channelalignment circuitry 170 in all four channels may be supported by a statemachine (conceptually similar to state machine 140) (e.g., in supportinglogic 70) for making sure that channel alignment is based onsufficiently repeated detection of the same conditions. As in the caseof state machine 140, this may be done to ensure that channel alignmentis based on stable circuit operation, and to increase the reliability ofthe channel alignment function.

Channel alignment circuitry 170 outputs channel-aligned data via leads172. This data is applied to one set of inputs of programmable logicconnector (“PLC”) 190, and also to byte deserializer and phasecompensation circuitry 180. One of the functions of circuitry 180 is toassemble two successive bytes from leads 172 for application in parallelto the other set of inputs of PLC 190. PLC 190 is programmable orotherwise controllable to pass the signals on either of its input setsto output terminals 62 and thus to PLD core 20 (FIGS. 1 and 2).Circuitry 180 may be used to assemble two bytes in parallel forsituations in which the serial byte rate is too great for PLD core 20.PLC 190 allows circuitry 180 to be either used or bypassed, as desired.

Another possible function of circuitry 180 is phase compensation. If thephase of the clock signal on lead 162 is different from the phase of aPLD core clock signal on lead 182, the phase compensation portion ofcircuitry 180 buffers the data passing through that circuitry so that itis output having the proper phase relationship to the PLD core clocksignal. (Again, the ultimate source of the signals on leads 162 and 182may be the same, but a phase shift may result from different routing ofthese two signals.)

FIG. 4 shows the transmitter portion of one representative channel 50(FIG. 2) in somewhat more detail. Successive bytes (or byte pairs)output by PLD core 20 via leads 64 are applied to one set of the inputsof PLC 220, and also to byte serializer and phase compensation circuitry210. In the case that PLC core outputs byte pairs in parallel (ratherthan one byte at a time), one of the functions of circuitry 180 is toserialize the bytes in such a pair into two serial bytes. Circuitry 210is clocked by a clock signal on lead 212 that may come from supportinglogic 70. Circuitry 210 may also be clocked by a PLD core clock signalon lead 214. Circuitry 210 may provide phase compensation between apossibly different phasing of the signals on leads 212 and 214 (similarto the above-described phase compensation function of circuitry 180).(As in the case of above-described network 114 (FIG. 3), variousportions of network 212 may convey bit rate or byte rate versions of aclock signal. Elements 210 and 230 need only the byte rate version, butelement 240 needs both the byte rate version and the bit rate version.)The output signals of circuitry 210 are applied to the other set ofinputs of PLC 220.

PLC 220 is programmable or otherwise controllable to connect either setof its inputs to its outputs 222. Thus PLC 220 allows circuitry 210 tobe either used or bypassed, as desired.

The 8-bit byte signals on leads 222 are applied to 8 bit to 10 butencoder circuitry 230. Encoder 230 converts each 8-bit byte to 10-bitform in accordance with the scheme shown in above-mentioned Franaszek etal. U.S. Pat. No. 4,486,739. Circuitry 230 is also clocked by signal212.

The 10-bit parallel output signals of encoder 230 are applied toserializer circuitry 240. Serializer 240 converts the parallel data itreceives to serial form for application to output driver 56. Anillustrative construction for serializer 240 is shown in theabove-mentioned Aung et al. reference, although any other suitableconstruction may be used instead if desired. Once again, serializer 240is clocked by signal 212.

More possible features for circuitry of the type shown in FIG. 3 areshown in FIGS. 5A-5C. These FIGS. will now be described, but it will notbe necessary to repeat description of elements that have already beendescribed in connection with FIG. 3.

Among other things, FIGS. 5A-5C show the inclusion of controllablerouting that allows various subsets of the elements shown in FIG. 3 tobe used in various applications of the circuitry. Principal componentsinvolved in selecting a particular desired routing are PLCs like 300,310, 320, etc. These PLCs are controlled by associated control circuitrylike 302, 312, 322, etc. Such control circuitry 302, etc., can take anyof several forms. For example, function control elements (“FCEs”) (e.g.,programmable memory cells) R can be used to control a PLC as shown inFIG. 6. This type of control is basically static and can be changed onlyby reprogramming the PLD (assuming the PLD is re-programmable). Anotherpossible type of control is more dynamic control (e.g., based on asignal or signals from PLD core circuitry 20 that can change from timeto time). FIG. 7 illustrates this type of control. Still anotherpossible type of control is programmable selection between either of thetwo types of previously described control (see FIG. 8). In theparticular example shown in FIG. 8, PLC 300/310/ETC. is controlled bythe output signal of PLC 308. FCE 304 controls which of the two inputsto PLC 308 that PLC bases its output signal on. One of those two inputscomes from FCE 306 and is therefore a static signal. The other input toPLC 308 can be a more dynamic signal (e.g., from PLD core 20). Thus ifstatic control of PLC 300/310/ETC. is desired, FCE 304 is programmed tocause PLC 308 to output the signal from FCE 306. On the other hand, ifmore dynamic control of PLC 300/310/ETC. is desired, FCE 304 isprogrammed to cause PLC 308 to output its dynamic input signal. Any ofthe types of control illustrated by FIGS. 6-8 can be used to control anyof the PLCs shown herein.

One reason for adding to circuitry of the type shown in FIG. 3 variousrouting options as shown in FIGS. 5A-5C is the following. The circuitryshown in FIG. 3 has all the elements needed to support the XAUIstandard. But all of the operations needed to support XAUI may not beneeded to support other standards. If non-XAUI communication is beingimplemented, the routing options added in FIG. 5 allow the functionsthat are not needed to be bypassed. Alternatively, some standards orprotocols may require functions that are generally like XAUI functions,but that are sufficiently different from standard XAUI functions thatXAUI-specific circuitry is not suitable for performing them. In thatcase, general purpose PLD core circuitry 20 may be used to perform thosefunctions, and the routing options added in FIG. 5 allow signals to berouted to the PLD core 20 when the transition from so-called“hard-logic” (in dedicated, largely hard-wired circuitry 50) toso-called “soft-logic” (in PLD core 20) is to be made.

FIGS. 5A-5C indicate illustrative widths for many of the depicted buses.It will be understood, however, that these bus widths are onlyexemplary, and that other bus widths can be used instead if desired.Also, the particular routing options shown in FIGS. 5A-5C areillustrative, and other routing options can be used instead or inaddition if desired.

In FIG. 5A the circuitry essentially begins with a PLC 300 for selectingeither the incoming CDR signal from driver 52 or a loop-back CDR signalfrom the associated transmitter circuitry (FIG. 4 or, in more detail,FIG. 12B). The loop-back option is primarily intended as a test mode. Itallows the user to process a signal out through the transmittercircuitry and then back in again through the receiver circuitry to testwhether that processing is improperly altering the signal. No externalconnection needs to be made. If the test signal comes back unaltered,then it is known that both the transmitter and receiver circuitries areoperating properly. PLC 300 is an example of a PLC that it may bedesirable to control dynamically (e.g., as in FIG. 7) so that PLC 300can initially select the test or loop-back mode, and thereafter beswitched to the more normal operating mode in which the PLC passes theoutput signal of driver 52.

The output signal of PLC 300 is applied to CDR/deserializer 110/120,already described in connection with FIG. 3. As was mentioned in thatearlier discussion, circuitry 110/120 also receives several candidaterecovered clock signals from supporting logic 70. One of those clocksignals is applied to divide by J circuitry 410, which divides thefrequency of the applied signal by a scale factor J. J can be the numberof bits in each byte, so that whereas the input signal to circuit 410has the frequency of the bit rate, the output signal of circuit 410 hasthe frequency of the byte rate. J can be a programmable (e.g., static)value. For example, the value of J may be programmed into FCEsassociated with circuit 410. Alternatively, J may be a more dynamicsignal (e.g., supplied by PLD core 20). FIG. 9 shows illustrativecircuitry for allowing the value of J used by circuit 410 to be either aprogrammed static value (from programmable FCE register 412) or adynamic value (e.g., from PLD core 20). PLC 416 is programmablycontrolled by FCE 414 to select either the static or dynamic input foruse as the finally selected value of J. J is 10 for XAUI applications,but it may be a number less than 10 for certain non-XAUI applications.The output signal of circuit 410 may be needed by certain of theelements downstream in the receiver circuitry as will be described inmore detail below.

To enable the circuitry to support certain non-XAUI standards orprotocols, the deserializer portion 120 of circuitry 110/120 ispreferably able to handle bytes of various lengths (i.e., 10 bits forXAUI, but less than 10 bits for certain non-XAUI standards). This wasmentioned briefly in connection with FIG. 3, but it can be elaboratedhere by noting that this function is similar to the operation ofabove-described divide by J circuit 410. In particular, the same valueof J (controlled or selected in the same way as for circuit 410) may beused within deserializer portion 120 to determine the byte length thatthe deserializer provides. The output bus width of circuitry 110/120 isshown as 10 in FIG. 5A (as is required for XAUI), but if J is less than10 in some non-XAUI application, then only J of the 10 available outputleads will actually be used in that application.

The deserialized (and therefore parallel) data outputs of circuitry110/120 are applied to pattern detect and state machine circuitry130/140 (described above in connection with FIG. 3), and also to one setof inputs of PLC 320. Jumping ahead briefly, it will be seen that onepossible routing for these signals applied to PLC 320 is through PLC 380(FIG. 5B) and through PLC 390 (FIG. 5C) to PLD core 20 (FIG. 5C). Thus,if after deserialization in circuitry 110/120, it is not desired to doany further hard-logic processing of the incoming data, that data can besent directly to PLD core 20, where all further processing is in thesoft-logic of the device. This is only one of several possible routingsof the signals applied to PLC 320 from circuitry 110/120, and otherpossible routings will be discussed below.

Returning to circuitry 130/140 in FIG. 5A, the patterns (specialcharacters) that this circuitry detects may be selectable to help thecircuitry support various standards or protocols. For example, FIG. 10shows illustrative circuitry that allows the pattern(s) used bycircuitry 130/140 to be either static pattern(s) programmed into FCEregisters 420 or dynamic pattern(s) (e.g., from PLD core 20). PLC 424 iscontrolled by FCE 422 to select either the static or dynamic patterninputs for use as the final pattern(s) that circuitry 130/140 willdetect. By providing multiple instances of circuitry of the type shownin FIG. 10, some patterns can be made static, while other patterns aremade dynamic.

Various parameters employed by the state machine portion 140 ofcircuitry 130/140 may also be controllable or selectable to help thecircuitry support various standards or protocols. FIG. 11 showsillustrative circuitry for allowing such state machine parameters to beeither static or dynamic. As shown in FIG. 11, FCE registers 430 can beprogrammed with one or more parameter values for the state machineportion 140 of circuitry 130/140. Because they are programmed into thedevice, these values are “static”. PLC 434 is programmably controlled byFCE 432 to select either the static values or values that can be moredynamic (e.g., from PLD core 20). It will be appreciated that, byproviding multiple circuits like that shown in FIG. 11, some parametervalues can be made static, while others are made dynamic.

The output signals of circuitry 130/140 are shown in FIG. 5A to includeup to 10 data signals and up to 4 other signals. These 4 other signalsmay include flag signals to indicate that particular patterns have beendetected by circuitry 130/140.

The data output signals of circuitry 130/140 are applied to one set ofinputs of PLC 310. Loop-back signals (from the associated transmittercircuitry (FIG. 4 or, in more detail, FIG. 12B)) are applied to theother set of inputs of PLC 310. This loop-back routing may be used likeearlier-described loop-back routing (e.g., to facilitate testing ofportions of the circuitry). PLC 310 is controllable by control circuitry312 to pass the data on either set of its inputs to its outputs.

The outputs of PLC 310 and the 4 outputs of circuitry 130/140 that arenot applied to PLC 310 are applied to 10B to 8B decoder 150, and also toone set of inputs of PLC 320. Decoder 150 has already been described inconnection with FIG. 3 and does not need to be described again here. Therouting to and through PLC 320 allows decoder 150 to be bypassed ifdesired. The bypass routing can be used for implementing a communicationstandard or protocol that does not require 10B to 8B decoding.

The output signals of decoder 150 are applied to rate character deletestate machine 160 a, and also to another set of inputs of PLC 320. Theoutput signals of circuitry 150 include up to 8 parallel data signalsand up to 5 parallel flag signals, for a total of up to 13 parallelsignals. Although not shown in FIG. 3 as a separate part of circuitry160, the function of circuitry 160 a is mentioned in the earlierdiscussion of FIG. 3. To briefly recapitulate, as part of the ratematching function of circuitry 160, it may be necessary to occasionallydelete a character (byte) that has been received. This can be safelydone for at least many of the characters that are transmitted duringidle intervals. State machine 160 a therefore typically performs itscharacter-deleting function when signals from upstream circuitry such as130/140/150 indicate that non-essential idle interval data is beingreceived, and when downstream circuitry such as rate matching FIFO 160 bindicates that the downstream circuitry is approaching the limit of itscapacity to buffer the rate difference that is being experienced.Character deletion can be implemented by causing rate matching FIFOcircuitry 160 b (FIG. 5B) to skip one byte in its reading operation inresponse to an appropriate signal from state machine 160 a. If desired,one or more of the parameters employed in state machine 160 a may bemade programmably selectable or dynamically changeable in the same waythat can be done for the state machine portion 140 of circuitry 130/140(e.g., by supplying parameter values from circuitry of the type shown inFIG. 11).

The data output signals of state machine 160 a are applied to one set ofinputs of PLC 330 (FIG. 5B). State machine 160 a also exchanges controlsignals with rate matching FIFO circuitry 160 b via routing that doesnot pass through PLC 330. The other set of inputs to PLC 330 comes fromthe outputs of PLC 320. Circuitry 332 controls PLC 330 to apply eitherof its sets of inputs to circuitry 160 b. PLC 330 thus allows circuitry160 b to receive its data inputs from state machine 160a. Alternatively,PLCs 320 and 330 allow circuitry 160 b to receive its data inputsdirectly from (a) the outputs of decoder 150, (b) the outputs of PLC310, or (c) the outputs of CDR/deserializer circuitry 110/120. Thus ratematching FIFO circuitry 160 b can be used either with or without ratecharacter deletion 160 a, with or without 10B to 8B decoding 150, andwith or without pattern detection 130/140.

The rate matching operation of circuitry 160 b has been describedearlier in connection with FIG. 3 and does not need to be describedagain here. It should be mentioned here, however, that PLC 340(controlled by control circuitry 342) allows the second clock inputsignal to circuitry 160 b to be either the output signal of dividercircuit 410 (FIG. 5A) or a PLD core clock signal (i.e., from theconventional clock signal distribution network (“clock trees”) 26 (FIG.5C) of PLD core 20). The output signal of PLC 340 is also the clocksignal applied to several other elements downstream from circuitry 160b.

The data output signals of circuitry 160 b are applied to rate characterinsert state machine 160 c, and also to one set of inputs of PLC 350.Circuitry 160 b also exchanges control signals with circuitry 160 c. Theother set of inputs to PLC 350 are the outputs of PLC 320.

Although not shown separately in FIG. 3, the function of rate characterinsert state machine 160 c has already been described in general termsin connection with FIG. 3. Character (i.e., byte) insertion isconceptually like character deletion, except that insertion is performedin response to a rate difference that is of polarity opposite to a ratedifference that will necessitate character deletion. Character insertioncan be done at times like those at which it would be appropriate to docharacter deletion. Character insertion can be implemented by havingoutput signals of state machine 160 c cause circuitry 160 b to read thesame byte twice. As in the case of other state machines that havealready been described, one or more of the operating parameters of statemachine 160 c can be made programmable or dynamically variable (e.g., bysupplying them from or via circuitry of the type shown in FIG. 11). Thealternative output routing of circuitry 160 b via PLC 350 allowscircuitry 160 c to be bypassed if the rate character insertion functionis not needed in implementing a particular communication protocol orstandard.

The data output signals of circuitry 160 c are applied to one set ofinputs of PLC 360. The outputs of PLC 350 are applied to the other setof inputs of PLC 360, and also to one set of the inputs of PLC 380.Control circuitry 362 causes PLC 360 to output the signals from eitherof its two sets of inputs. The output signals of PLC 360 are applied tochannel align circuitry 170, and also to a second set of inputs to PLC380.

The functions of element 170 have already been described in connectionwith FIG. 3 and do not need to be described again here. As in the caseof earlier-described state machines, one or more of the parameterscontrolling some or all of the operations of the state machine in orassociated with circuitry 170 may be programmable or dynamicallyvariable (e.g., by using one or more instances of circuitry of the typeshown in FIG. 11).

The output signals of channel align circuitry 170 are applied to XAUIreceive logic and state machine 450. The XAUI standard specifies thatXAUI data must conform to certain rules, and circuitry 450 performsconventional functions related to those rules. Once again, the statemachine portion of circuitry 450 may have parameters controlled as shownin FIG. 11.

The output signals of circuitry 450 are applied to a third set of inputsof PLC 380. Control circuitry 382 controls PLC 380 to output any one ofits three sets of inputs. Thus PLC 380 can output either (a) the outputsof PLC 350, (b) the outputs of PLC 360, or (c) the outputs of circuitry170 b.

As shown in FIG. 5C, the outputs of PLC 380 are applied to byteserializer and phase compensation circuitry 180, and also to one set ofinputs of PLC 390. (PLC 390 in FIG. 5C is the same as PLC 190 in FIG.3.) Circuitry 180 has already been described in connection with FIG. 3and therefore does not need to be described again. However, it should bementioned that FIG. 5B shows divide by 2 circuit 440 that divides anapplied clock signal by 2 for use by circuitry 180 in cutting the byterate in half (needed for byte deserialization). (Elements 370 and 372allow the signal applied to circuit 440 to be either recovered clocksignal 114 or the output signal of PLC 340.) The two-byte-wide dataoutputs of circuitry 180 are applied to a second set of inputs of PLC390. Circuitry 392 controls PLC 390 to apply either of its sets ofinputs to PLD core 20 (especially the user logic 24 of the PLD core).PLC 390 therefore allows PLD core 20 to receive either (a) the outputsof circuitry 180, or (b) the outputs of PLC 380 (if the functions ofcircuitry 180 are not needed to support a particular communicationprotocol).

In general, the various clock signal selection and routing optionsprovided in FIGS. 5A-5C (e.g., by PLCs 340 and 370) complement thevarious data routing options.

From the foregoing, it will be seen that many different subcombinationsof the operating circuitry shown in FIGS. 5A-5C can be used to supportmany different communication protocols or standards. The following tablelists just some of the possibilities (using in each case the referencenumber(s) of the operating portions that are used in the subcombinationand omitting the reference number(s) of the operating portions that arenot used). Option Operating Portions Used 1. 110/120 2. 110/120, 180 3.110/120, 160b 4. 110/120, 160b, 180 5. 110/120, 170a, 170b 6. 110/120,170a, 170b, 180 7. 110/120, 160b, 170a, 170b 8. 110/120, 160b, 170a,170b, 180 9. 110/120, 130/140 10. 110/120, 130/140, 180 11. 110/120,130/140, 150 12. 110/120, 130/140, 150, 180 13. 110/120, 130/140, 150,160a-c 14. 110/120, 130/140, 150, 160a-c, 180 etc. Other combinationsare also possible.

Additional elements of variability that facilitate implementing manydifferent communication protocols or standards result from thefollowing: (1) the ability to programmably select or dynamically varymany of the operating parameters of the operating portions of thecircuitry, and (2) the ability to use PLD core 20 to perform(soft-logic) variants of operations of the various kinds associated withthe hard-logic operating portions. Example of immediately preceding item(1) have been discussed in connection with FIGS. 6-11. An example ofimmediately preceding item (2) would be performing in PLD core 20 a typeof 10B to 8B decoding different from that performable by hard-logicoperating circuitry 150.

FIGS. 12A and 12B show illustrative transmitter circuitry 50 that can beassociated with the receiver circuitry of FIGS. 5A-5C. The circuitryshown in FIGS. 12A and 12B is like that shown in FIG. 4, but isaugmented with additional capabilities to give it more flexibility andthereby enable it to support various different communication protocolsor standards. Many of the elements shown in FIGS. 12A and 12B arerepeated from FIG. 4. Because those elements have already been describedin connection with FIG. 4, it will not be necessary to fully describethem again in connection with FIGS. 12A and 12B. As in the case of FIGS.5A-5C, the bus widths shown in FIGS. 12A and 12B are only illustrative,and other bus widths can be used instead if desired.

As shown in FIG. 12A, data signals output by user logic 24 in PLD core20 are applied to byte serializer and phase compensation circuit 210(previously described in connection with FIG. 4). These signals are alsoapplied to one set of inputs of PLC 510 (the same as PLC 220 in FIG. 4).The outputs of circuitry 210 are applied to the other set of inputs ofPLC 510. Control circuitry 512 controls PLC 510 to select either of itssets of inputs as its outputs. As was mentioned in connection with FIG.4, PLC 510 allows signals to be routed around circuitry 210 if thecommunication protocol being implemented does not require use ofcircuitry 210.

The output signals of PLC 510 are applied to XAUI transmitter statemachine circuitry 520, and also to one set of the inputs of each of PLCs530 and 540. Like circuitry 450 in FIG. 5B, circuitry 520 performsconventional functions related to XAUI's rules for XAUI data. Circuitrylike that shown in FIG. 11 can again be used to control parameters usedby circuitry 520.

The output signals of state machine 520 are applied to the second set ofinputs of PLC 530. Control circuitry 532 controls PLC 530 to selecteither of its sets of inputs as its outputs. PLC 530 (and also PLC 540,described later) allows circuitry 520 to be bypassed if thecommunication protocol being implemented does not require use ofcircuitry 520.

The output signals of PLC 530 are applied to 8B to 10B encoder 230(described earlier in connection with FIG. 4). The output signals ofencoder 230 are applied to the other set of inputs of PLC 540. Controlcircuitry 542 controls PLC 540 to select either of its inputs as itsoutputs. PLC 540 therefore allows both of elements 520 and 230 to bebypassed if the communication protocol being implemented does notrequire use of those elements.

The output signals of PLC 540 are applied to serializer circuitry 240(described earlier in connection with FIG. 4). The output signals of PLC540 are also the loop-back signals applied to the second set of inputsof PLC 310 (FIG. 5A) in the associated receiver circuitry. Divide by Jcircuitry 560 supports operation of other elements in FIGS. 12A and 12Bby dividing by J a bit rate clock signal frequency from supporting logic70 to produce a byte rate clock signal. As in earlier discussionsherein, J is the number of bits (e.g., 10) in each byte in thecommunication protocol being implemented. The value of J used bycircuitry 560 may be programmable or dynamically selectable (e.g., usingcircuitry like that shown in FIG. 9).

The serialized output of serializer 240 is applied to one input of PLC550. The output of serializer 240 is also the loop-back input to PLC 300in FIG. 5A. The other input to PLC 550 is the loop-back connection fromthe output of driver 52 (FIG. 5A). Control circuitry 552 controls PLC550 to select either of its inputs for application to output driver 56.Accordingly, the last-mentioned loop-back connection allows testing ofan input/output driver pair 52/56.

From the foregoing discussion of FIGS. 12A and 12B it will be seen that(like the receiver circuitry shown in FIGS. 5A-5C) this transmittercircuitry is capable of supporting many different communicationprotocols. The various routing options provided by PLCs 510, 530, 540,and 550 allow various ones of the operating components to be either usedor bypassed as desired. Control of these PLCs may take any of the formsdescribed earlier for other PLCs (e.g., any of the PLC control circuitryoptions shown in FIGS. 6-8 may be used). Also (similar to what isdescribed earlier for FIGS. 5A-5C) various aspects of the operations ofthe operating components may be programmably selected or dynamicallyvariable. For example, circuitry like that shown in FIG. 9 may be usedto supply the value of J to circuit 560, and circuitry like that shownin FIG. 11 may be used to provide the values of various state machineparameters to circuitry 520. User logic 24 in PLD core 20 may be used toprovide functions generally like those of bypassed operating componentsin FIGS. 12A and 12B in the event that the communication protocol beingimplemented requires deviation in function greater than the range ofdeviation that the bypassed operating component is capable of.

The circuitry shown and described herein has many features thatfacilitate its use to support a wide range of HSS communicationstandards and protocols. As has been described, the circuitry hasfour-channel building blocks (or quads) for HSS communication. The XAUIstandard uses one quad. The InfiniBand standard may use either onechannel, four channels, or 12 channels, and can therefore be supportedby using one channel, one quad, or three quads. Each channel includesboth a receiver and a transmitter that are capable of full duplexoperation. The receiver and transmitter in a channel can operate at thesame or different frequencies. For example, the frequency difference canbe 2:1 or 4:1. The circuitry supports CDR signalling over a wide rangeof frequencies (e.g., a range from about 622 Mbps to about 3.2 Gbps).The CDR circuitry preferably includes loss of lock (“LOL”) and runlength violation (“RLV”) protection (see, for example, theabove-mentioned Aung et al. reference for illustrative LOL and RLVelements). A single PLL circuit (with LOL logic) can support an entirequad.

Still other advantageous features of the circuitry are the programmableserializer and deserializer elements. For example, these elements can beprogrammed to operate with either 10 bit words (bytes) or 8 bit words(bytes) by appropriately programming or otherwise controlling theparameter J. Similarly, the width of the bus (excluding status/controlsignals) between a channel and the PLD core 20 is programmable (e.g., to8, 10, 16, or 20). The character recognition and alignment logic ispreferably programmable (e.g., with respect to the characters to berecognized and/or with respect to the state machine functions used inthe recognition and/or alignment). 8B/10B encoder and decoder circuitsmeeting industry standards (e.g., the IEEE 802.3z standard) arepreferably included.

The circuitry preferably includes programmable (or otherwisecontrollable) power-down for each transmitter and receiver so that eachtransmitter and receiver can be turned off if it is not needed. Separatereset control is preferably also provided for each transmitter andreceiver.

Because different differential signalling standards or protocols may usevoltage swings of different magnitudes, the receiver drivers 52 used inthe circuitry of this invention may be programmable or otherwisecontrollable to detect any of several different minimum amounts ofapplied voltage difference as a loss of signal (“LOS”) condition. FIG.13, for example, shows that each receiver driver 52 can include an LOSoutput for outputting an LOS signal when the difference between the RXinput voltages is less than a minimum selected by the output(s) of PLC610. This PLC is controlled by FCE 612 to select its outputs from eitherFCEs 614 or from a source of more dynamic signals such as PLD core 20.The various possible outputs of PLC 610 indicate to driver 52 which ofseveral possible minimum RX signal voltage differences to detect as anLOS condition. If the voltage difference between the RX input signalsfalls below the indicated minimum, driver 52 produces an LOS signal toindicate that a valid differential input signal is not present.

Another feature that the circuitry of this invention may have isillustrated by FIG. 14. As shown in that FIG., each input lead torepresentative receiver driver 52 includes a weak pull up 620 to VCC(logic 1) or a weak pull down 622 to VSS (logic 0). These weakpull-up/pull-down connections help to prevent driver 52 from switchingrandomly and unnecessarily when the driver is not being used for ameaningful signal. This saves the power that would otherwise be consumedby such unnecessary switching of driver 52.

A feature that the transmitter circuitry of this invention may have isillustrated by FIG. 15. This feature is programmable or otherwiseselectable output voltage offset or swing (“VOD”), which can beadditionally accompanied by pre-emphasis, if desired. As shown in FIG.15, representative output driver 56 receives one or more control signalsfrom PLC 630. This PLC is controlled by FCE 632 to select these controlsignals from either FCEs 634 or from a source of more dynamic signalssuch as PLD core 20. The control signals thus applied to driver 56 causeit to operate with any one of two or more TX output signal voltagedifferences. These control signals may also cause driver 56 to operatewith a desired amount of initial voltage difference pre-emphasis, ifthat is desired.

Still another feature that the circuitry of this invention may have isvariable input impedance to better match the impedance of thetransmission line from which the circuitry is receiving an input. Asshown in FIG. 16, such variable input impedance is represented byvariable resistor 640. The impedance of variable resistor 640 iscontrolled by one or more output signals from PLC 642. This PLC iscontrolled by FCE 644 to output either the output(s) of FCE(s) 646 ormore dynamic impedance selection signals (e.g., from PLD core 20).

The circuitry of this invention may also allow the use of an externalresistor for calibration. And the circuitry of the invention may includehot insertion/removal protection logic.

FIG. 17 illustrates a PLD 10 of this invention in a data processingsystem 1002. Data processing system 1002 may include one or more of thefollowing components: a processor 1004; memory 1006; I/O circuitry 1008;and peripheral devices 1010. These components are coupled together by asystem bus or other interconnections 1020 and are populated on a circuitboard 1030 that is contained in an end-user system 1040. Any of theinterconnections between PLD 10 and any other elements may be made usingthe above-described CDR or LVDS signaling.

System 1002 can be used in a wide variety of applications, such ascomputer networking, data networking, instrumentation, video processing,digital signal processing, or any other application where the advantageof using programmable or reprogrammable logic is desirable. PLD 10 canbe used to perform a variety of different logic functions. For example,PLD 10 can be configured as a processor or controller that works incooperation with processor 1004. PLD 10 may also be used as an arbiterfor arbitrating access to a shared resource in system 1002. In yetanother example, PLD 10 can be configured as an interface betweenprocessor 1004 and one of the other components in system 1002. It shouldbe noted that system 1002 is only exemplary, and that the true scope andspirit of the invention should be indicated by the following claims.

Various technologies can be used to implement PLDs having the featuresof this invention, as well as the various components of those devices(e.g., the above-described PLCs and programmable function controlelements (“FCEs”) that control the PLCs). For example, each PLC can be arelatively simple programmable connector such as a switch or a pluralityof switches for connecting any one of several inputs to an output.Alternatively, each PLC can be a somewhat more complex element that iscapable of performing logic (e.g., by logically combining several of itsinputs) as well as making a connection. In the latter case, for example,each PLC can be product term logic, implementing functions such as AND,NAND, OR, or NOR. Examples of components suitable for implementing PLCsare EPROMs, EEPROMs, pass transistors, transmission gates, antifuses,laser fuses, metal optional links, etc. PLCs and other circuitcomponents can be controlled by various, programmable, function controlelements (“IFCEs”). (With certain implementations (e.g., fuses and metaloptional links) separate FCE devices are not required.) FCEs can also beimplemented in any of several different ways. For example, FCEs can beSRAMs, DRAMs, first-in first-out (“FIFO”) memories, EPROMs, EEPROMs,function control registers (e.g., as in Wahlstrom U.S. Pat. No.3,473,160), ferro-electric memories, fuses, antifuses, or the like. Fromthe various examples mentioned above it will be seen that this inventionis applicable to both one-time-only programmable and reprogrammabledevices.

It will be understood that the foregoing is only illustrative of theprinciples of the invention, and that various modifications can be madeby those skilled in the art, without departing from the scope and spiritof the invention. For example, the order of the various operatingcomponents shown and described above is, at least in some respects, onlyillustrative. Thus the order of at least some of these elements can bechanged from the order shown, if that is desired.

1. A programmable logic integrated circuit device comprising:programmable logic circuitry; and high speed serial interface circuitryincluding a plurality of functional subcircuits, each of which is atleast partly hard-wired to perform a respective function that may beneeded to provide a high speed serial interface, and programmablycontrollable routing circuitry adapted to allow at least one of thefunctional subcircuits to be selectively bypassed, the at least one ofthe functional subcircuits being selected from the group consisting ofpattern detection circuitry, 10 bit to 8 bit decoder circuitry, 8 bit to10 bit encoder circuitry, and channel alignment circuitry.
 2. The devicedefined in claim 1 wherein the high speed serial interface circuitrycomprises: receiver circuitry.
 3. The device defined in claim 1 whereinthe high speed serial interface circuitry comprises: transmittercircuitry.
 4. The device defined in claim 1 wherein the functionalsubcircuits comprise: clock data recovery circuitry.
 5. The devicedefined in claim 1 wherein the functional subcircuits comprise:deserializer circuitry.
 6. The device defined in claim 1 wherein the atleast one of the functional subcircuits comprises: pattern detectioncircuitry.
 7. The device defined in claim 1 wherein the functionalsubcircuits comprise state machine circuitry, and wherein theprogrammably controllable routing circuitry is additionally adapted toallow the state machine circuitry to be selectively bypassed.
 8. Thedevice defined in claim 1 wherein the at least one of the functionalsubcircuits comprises: 10 bit to 8 bit decoder circuitry.
 9. The devicedefined in claim 1 wherein the functional subcircuits comprise ratematching circuitry, and wherein the programmably controllable routingcircuitry is additionally adapted to allow the rate matching circuitryto be selective bypassed.
 10. The device defined in claim 1 wherein theat least one of the functional subcircuits comprises: channel alignmentcircuitry.
 11. The device defined in claim 1 wherein the functionalsubcircuits comprise byte deserializer circuitry, and wherein theprogrammably controllable routing circuitry is additionally adapted toallow the byte deserializer circuitry to be selectively bypassed. 12.The device defined in claim 1 wherein the functional subcircuitscomprise byte serializer circuitry, and wherein the programmablycontrollable routing circuitry is additionally adapted to allow the byteserializer circuitry to be selectively bypassed.
 13. The device definedin claim 1 wherein the at least one of the functional subcircuitscomprises: 8 bit to 10 bit encoder circuitry.
 14. The device defined inclaim 1 wherein the functional subcircuits comprise: serializercircuitry.
 15. The device defined in claim 1 wherein the functionalsubcircuits comprise character deletion circuitry, and wherein theprogrammably controllable routing circuitry is additionally adapted toallow the character deletion circuitry to be selectively bypassed. 16.The device defined in claim 1 wherein the functional subcircuitscomprise character insertion circuitry, and wherein the programmablycontrollable routing circuitry is additionally adapted to allow thecharacter insertion circuitry to be selectively bypassed.
 17. Thedevices defined in claim 1 wherein the at least one functionalsubcircuit is at least partly programmably controllable to vary afunction performed by that functional subcircuit.
 18. The device definedin claim 1 wherein routing selectable by the routing circuitry includesapplying a signal that is bypassing one of the functional subcircuits toanother of the functional subcircuits.
 19. The device defined in claim 1wherein routing selectable by the routing circuitry includes applying asignal that is bypassing a functional subcircuit to the programmablelogic circuitry.
 20. A digital processing system comprising: processingcircuitry; a memory coupled to said processing circuitry; and a deviceas defined in claim 1 coupled to the processing circuitry and thememory.
 21. A printed circuit board on which is mounted a device asdefined in claim
 1. 22. The printed circuit board defined in claim 21further comprising: a memory mounted on the printed circuit board andcoupled to the device.
 23. The printed circuit board defined in claim 21further comprising: processing circuitry mounted on the printed circuitboard and coupled to the device.
 24. The device defined in claim 1wherein the high speed serial interface circuitry comprises one of aplurality of channels of high speed serial interface circuitry, eachadapted to receive a respective one of a plurality of high speed serialdata signals and to convert that signal to a plurality of parallel datasignals suitable for application to the programmable logic circuitry,and each including programmably controllable routing circuitry adaptedto select which of a plurality of functions available in the high speedserial interface circuitry will be performed on the high speed serialdata signal to convert it to the plurality of parallel data signals, atleast one of the functions being selected from the group consisting ofpattern detection, 10 bit to 8 bit decoding, channel alignment, and 8bit to 10 bit encoding.
 25. The device defined in claim 24 wherein thefunctions available in the high speed serial interface circuitry includeclock data recovery, deserialization, pattern detection, 10 bit to 8 bitdecoding, rate matching, and channel alignment.
 26. The device definedin claim 25 wherein the functions available in the high speed serialinterface circuitry further include byte deserialization.
 27. The devicedefined in claim 25 wherein the functions available in the high speedserial interface circuitry further include character deletion andcharacter insertion.
 28. The device defined in claim 24 wherein each ofthe channels is further adapted to receive a respective plurality offurther parallel data signals from the programmable logic circuitry andto convert those signals to high speed serial data output signal. 29.The device defined in claim 28 wherein the functions available in thehigh speed serial interface circuitry further include 8 bit to 10 bitencoding and serialization.
 30. The device defined in claim 29 whereinthe functions available in the high speed serial interface circuitryfurther include byte serialization.